" 行设置
set numberwidth=4
set number
set relativenumber
autocmd InsertEnter * :set norelativenumber number
autocmd InsertLeave * :set relativenumber number
set linebreak " 不在单词内部换行
set nowrap
" 缩进
set autoindent " 自动缩进
set noexpandtab " 用空格代替制表符
set tabstop=4 " 设置tab缩进为4个空格
set shiftwidth=4 " 每一级缩进长度, 同时也代表了代码折叠判定
set softtabstop=4 " 连续4个空格视为一个Tab
set list                   " 显示 <Tab> 和 <EOL>
""set lcs=eol:^,tab:-,trail:!,extends:>,precedes:<
set listchars=eol:\ ,tab:\\ ,trail:.,extends:>,precedes:<
" list 模式下 <Tab> 显示用的字符,这里设置的是 |
set fillchars=vert:\| " 窗口间的分隔符
" 搜索
set hlsearch " 搜索结果高亮
set incsearch " 搜索输入时逐字高亮
set ignorecase smartcase " 搜索内容都是小写则忽略大小写,包含大写字母则不忽略大小写
set wildmenu " 在命令模式下, 按 Tab 键显示命令菜单 (默认)
set background=dark " 背景颜色为黑色
" 窗口
set splitright " 新建窗口时, 窗口会往右边放
set splitbelow " 新建窗口时, 窗口会往下边放
" 光标
set whichwrap+=<,>,h,l " 光标在上一行的末尾，按右键可以跳转带下一行的开头(正常模式起作用)
" 突出显示当前列
" set cursorcolumn
set cursorline " 突出显示光标所在行（默认样式是underline）
" set gcr=a:underline-blinkwait1

set mouse=a

hi CursorLine cterm=NONE ctermbg=234 
" hi: highlight 的简写
" cterm: 字体样式
	"NONE:字体无样式
	"bold: 字体加粗
	"underline: 字体加下划线. 多参数逗号 , 分割
" ctermbg:背景颜色
" ctermfg: 前景颜色(字体颜色)
hi CursorLineNr cterm=bold ctermfg=white ctermbg=black " 光标所在行行号样式
" 行号样式设置
highlight LineNr cterm=bold ctermfg=blue ctermbg=black
set scrolloff=5 " 光标离窗口上下边界 5 行时窗口自动滚动
" set termguicolors
"标签页
set showtabline=2 " 2 总是显示标签页，0 不显示，1 出现多个标签页才显示
set tabpagemax=15 " 最多可以打开15个标签页，默认10
highlight TabLine term=underline cterm=bold ctermfg=9 ctermbg=4
highlight TabLineSel term=bold cterm=bold ctermbg=Red ctermfg=yellow
set noautoread " 在 vim 以外编辑文件时,vim 里的文件会自动刷新
" 文件类型
filetype on " 检测文件类型
filetype indent on " 针对不同文件使用相应的缩进规则（会载入相关缩进文件）
filetype plugin on
filetype plugin indent on
set clipboard=unnamedplus " 启用系统剪贴板
set confirm " 处理未保存或只读文件的时候，弹出确认
set showmode " 在底部显示当前模式
" 字符编码
set encoding=utf-8 " vim内部字符编码格式,如buffer、寄存器、Vim 脚本文件等
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 " 选项是Vim写入文件时采用的编码类型
set termencoding=utf-8
set langmenu=zh_CN.UTF-8 " 菜单显示语言
set helplang=cn " 查询帮助显示的语言
set backspace=2 " 让 backspace 生效.不加参数则只能删除新添加的内容
" 文件备份
set nobackup " 禁止生成临时备份文件
set noswapfile " 不创建swap 临时交换文件
set nowritebackup " 编辑时不需要备份文件
set noundofile " 不创建撤销文件
set showcmd " 显示输入的命令 (默认)
" 状态行设置
set laststatus=2 " 显示状态行，值为 0 不显示，值为 1 当有多个窗口才显示，值为2 永久显示
" 获取当前路径，将$HOME转化为~
function! CurDir()
	let curdir = substitute(getcwd(), $HOME, "~", "g")
	return curdir
endfunction
" 设置状态行字体和背景颜色
highlight StatusLine cterm=bold ctermfg=black ctermbg=249
set virtualedit=block,onemore " 光标在 normol 模式下,可以定位到最后一个字的后面

set statusline=\ %{'>'.mode(1).'<'}\ %f\ %m%r%h\ %=\ %l:%p%%\ %{((&fenc==\"\")?\"\":\"\ \".&fenc)}\ 
syntax on 

colorscheme gruvbox
